#ifndef VALUENODE_HPP
# define VALUENODE_HPP

# include <list>

# include "ExpressionNode.hpp"

class ValueNode : public ExpressionNode
{
public:
    ValueNode();
    ValueNode(char name);
    virtual ~ValueNode();

public:
    virtual Tribool solve(Universe& universe);
    virtual void addChild(ExpressionNode* child);
    virtual ExpressionNode* clone(std::map<int, ExpressionNode*>& existingNodes);
    virtual NodeType::Type getType() const;

public:
    char getName() const;

private:
    Tribool _askHuman() const;

private:
    char _name;
    std::list<ExpressionNode*> _childs;
};

#endif // VALUENODE_HPP
